package cn.tedu.tmall.admin.content.service.impl;

import cn.tedu.tmall.admin.content.dao.repository.ICategoryRepository;
import cn.tedu.tmall.admin.content.pojo.param.CategoryAddParam;
import cn.tedu.tmall.admin.content.pojo.po.CategoryPO;
import cn.tedu.tmall.admin.content.service.ICategoryService;
import cn.tedu.tmall.common.exception.ServiceException;
import cn.tedu.tmall.common.web.ServiceCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 服务层-分类接口实现类
 */
@Slf4j
@Service
public class CategoryService implements ICategoryService {
    @Autowired
    private ICategoryRepository categoryRepository;

    /**
     * 新增分类
     * @param categoryAddParam 分类详情入参
     */
    @Override
    public void addCategory(CategoryAddParam categoryAddParam) {
        //使用MyBatisPlus插入类别
        //获取类别名称
        String name = categoryAddParam.getName();
        log.debug("Service-增加类别-入参:{}",name);
        //查找类别名称
        //交给repository层操作数据库，实现解耦
        int count = categoryRepository.countCategoryByName(name);
        //类别已存在
        if (count != 0){
            log.error("Service-插入类别-类别已存在:{}",name);
            throw new ServiceException(ServiceCode.FAIL.getCode(),"类别已存在");
        }
        //分类不存在，可插入类别
        log.debug("Service-插入类别-类别不存在，可插入类别名:{}",name);
        CategoryPO newCategoryPO = new CategoryPO();
        BeanUtils.copyProperties(categoryAddParam,newCategoryPO);
        log.debug("Service-保存入参:{}",newCategoryPO);
        //交给repository层操作数据库，实现解耦
        categoryRepository.save(newCategoryPO);
    }
}
